package cn.flying.cloud.esb.model;

import javax.validation.constraints.NotBlank;

import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * 报文header部分
 *
 * @author: admin
 * @date: 2025年04月11日 10:04
 * @version: 1.0
 */
public class ApiHeader implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 应用标识符
     * 设置为 WRITE_ONLY 时，属性仅在反序列化时被使用，即在 JSON 转 Java 对象的过程中会设置该属性的值。在序列化（Java 对象转 JSON）时，Jackson 会忽略该属性
     */
    @NotBlank(message = "应用标识符不能为空")
    @JsonProperty(value = "appId", access = JsonProperty.Access.WRITE_ONLY)
    private String appId;
    /**
     * 应用KEY 设置为 WRITE_ONLY 时，
     * 属性仅在反序列化时被使用，即在 JSON 转 Java 对象的过程中会设置该属性的值。在序列化（Java 对象转 JSON）时，Jackson 会忽略该属性
     */
    @NotBlank(message = "应用KEY不能为空")
    @JsonProperty(value = "appKey", access = JsonProperty.Access.WRITE_ONLY)
    private String appKey;
    /**
     * 流水号，每次请求唯一，每个服务在处理该交易生成
     */
    @NotBlank(message = "请求号不能为空")
    @JsonProperty(value = "serialNo")
    private String serialNo;
    /**
     * 交易号，每次交易唯一，交易过程的核心标识
     */
    @NotBlank(message = "交易流水不能为空")
    @JsonProperty(value = "reqMsgId")
    private String reqMsgId;
    /**
     * 请求时间戳 格式yyyy-MM-dd HH:mm:ss
     */
    @NotBlank(message = "请求时间戳不能为空")
    @JsonProperty(value = "reqTime")
    private String reqTime;
    /**
     * 调用接口服务码编号
     */
    @NotBlank(message = "接口服务码不能为空")
    @JsonProperty(value = "serviceCode")
    private String serviceCode;
    /**
     * 版本号
     */
    @JsonProperty(value = "version")
    private String version;
    /**
     * 响应码值信息
     */
    @JsonProperty(value = "result")
    private ApiResult result;

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getAppKey() {
        return appKey;
    }

    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }

    public String getSerialNo() {
        return serialNo;
    }

    public void setSerialNo(String serialNo) {
        this.serialNo = serialNo;
    }

    public String getReqMsgId() {
        return reqMsgId;
    }

    public void setReqMsgId(String reqMsgId) {
        this.reqMsgId = reqMsgId;
    }

    public String getReqTime() {
        return reqTime;
    }

    public void setReqTime(String reqTime) {
        this.reqTime = reqTime;
    }

    public String getServiceCode() {
        return serviceCode;
    }

    public void setServiceCode(String serviceCode) {
        this.serviceCode = serviceCode;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public ApiResult getResult() {
        return result;
    }

    public void setResult(ApiResult result) {
        this.result = result;
    }
}
